<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>terms 查询 | ElasticSearch 7.7 权威指南中文版</title>
	<meta name="keywords" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <meta name="description" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
	<script>
	var _link = 'query-dsl-terms-query.html';
    </script>
</head>
<body>
<div class="main-container">
    <section id="content">
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-dsl-terms-query.html" rel="nofollow" target="_blank">https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-dsl-terms-query.html</a>, 原文档版权归 www.elastic.co 所有<br/>本地英文版地址: <a href="../en/query-dsl-terms-query.html" rel="nofollow" target="_blank">../en/query-dsl-terms-query.html</a></div>
                        <!-- start body -->
                  <div class="page_header">
<strong>重要</strong>: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html" rel="nofollow">当前版本文档</a>。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch 权威指南 [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="query-dsl.html">查询领域特定语言(Query DSL)</a></span>
»
<span class="breadcrumb-link"><a href="term-level-queries.html">词级查询</a></span>
»
<span class="breadcrumb-node">terms 查询</span>
</div>
<div class="navheader">
<span class="prev">
<a href="query-dsl-term-query.html">« term 查询</a>
</span>
<span class="next">
<a href="query-dsl-terms-set-query.html">terms_set 查询 »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="query-dsl-terms-query"></a>terms 查询
</h2>
</div></div></div>

<p>
返回指定的字段中包含一个或多个<span class="strong strong"><strong>确切的</strong></span>词的文档。
</p>
<p>
除了可以搜索多个值，<code class="literal">terms</code> 查询和 <a class="xref" href="query-dsl-term-query.html" title="term 查询"><code class="literal">term</code> 查询</a>一样。
</p>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="terms-query-ex-request"></a>请求示例
</h3>
</div></div></div>
<p>
下面这个搜索返回 <code class="literal">user</code> 字段包含<code class="word">kimchy</code>或<code class="word">elasticsearch</code>的文档。
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET /_search
{
    "query" : {
        "terms" : {
            "user" : ["kimchy", "elasticsearch"],
            "boost" : 1.0
        }
    }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/291.console"></div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="terms-top-level-params"></a><code class="literal">terms</code>的顶级参数
</h3>
</div></div></div>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">&lt;field&gt;</code>
</span>
</dt>
<dd>
<p>(可选, object) 你想搜索的字段。</p>
<p>
该参数的值是你想在指定的字段中查找的一组词。

要返回文档，一个或多个词必须与字段值精确匹配，包括空格和大写。
</p>
<p>
默认情况下，Elasticsearch 将 <code class="literal">terms</code> 查询限制为最多 65,536 个词。

可以使用<a class="xref" href="index-modules.html#index-max-terms-count"><code class="literal" rel="nofollow">index.max_terms_count</code></a>设置来更改此限制。
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
要将现有文档的字段的值用作搜索词，请使用<a class="xref" href="query-dsl-terms-query.html#query-dsl-terms-lookup" title="Terms lookup">词项查找(terms lookup)</a>参数。
</p>
</div>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">boost</code>
</span>
</dt>
<dd>
<p>(可选, float) 用于降低或增加查询的<a class="xref" href="query-filter-context.html#relevance-scores" title="相关性评分">相关性评分</a>的浮点数。默认为 <code class="literal">1.0</code>。</p>
<p>
你可以使用 <code class="literal">boost</code> 参数来调整包含两个或更多查询的搜索的相关性评分。
</p>
<p>
<code class="literal">boost</code> 值是相对于默认值 <code class="literal">1.0</code> 的。
其值在 <code class="literal">0</code> 和 <code class="literal">1.0</code> 之间时会降低相关性评分，而大于 <code class="literal">1.0</code> 时会增加相关性评分。
</p>
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="terms-query-notes"></a>注意
</h3>
</div></div></div>
<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="query-dsl-terms-query-highlighting"></a>高亮 <code class="literal">terms</code> 查询
</h4>
</div></div></div>
<p>
<a class="xref" href="search-request-body.html#request-body-search-highlighting" title="Highlighting">高亮</a> 只是尽力而为。

Elasticsearch 可能不会返回<code class="literal">terms</code>查询的高亮结果，具体取决于：
</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
高亮器(highlighter)的类型
</li>
<li class="listitem">
查询中词的数量
</li>
</ul>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="query-dsl-terms-lookup"></a>词项查找(terms lookup)
</h4>
</div></div></div>
<p>
词项查找获取现有文档的字段值。

然后，Elasticsearch 使用这些值作为搜索词。

这在搜索大量词项时会很有帮助。
</p>
<p>
因为词项查找从文档中获取值，所以必须启用 <a class="xref" href="mapping-source-field.html" title="_source 字段" rel="nofollow"><code class="literal">_source</code></a> 映射字段才能使用词项查找。

<code class="literal">_source</code> 字段默认是启用的。
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
默认情况下，Elasticsearch 将 <code class="literal">terms</code> 查询限制为最多 65,536 个词。

这包括了使用词项查找获取的词项。

可以使用<a class="xref" href="index-modules.html#index-max-terms-count"><code class="literal" rel="nofollow">index.max_terms_count</code></a>设置来更改此限制。
</p>
</div>
</div>
<p>若要执行词项查找，请使用以下参数。</p>
<div class="section">
<div class="titlepage"><div><div>
<h5 class="title">
<a id="query-dsl-terms-lookup-params"></a>词项查找(terms lookup)的参数
</h5>
</div></div></div>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">index</code>
</span>
</dt>
<dd>
(必需, string) 要从中提取字段值的索引的名称。
</dd>
<dt>
<span class="term">
<code class="literal">id</code>
</span>
</dt>
<dd>
(必需, string) 要获取字段值的文档的<a class="xref" href="mapping-id-field.html" title="_id 字段" rel="nofollow">ID</a>。
</dd>
<dt>
<span class="term">
<code class="literal">path</code>
</span>
</dt>
<dd>
<p>
(必需, string) 要从中提取字段值的字段的名称。
Elasticsearch 使用这些字段的值作为查询的搜索词。
</p>
<p>
如果字段值包含嵌套内部对象的数组，则可以使用点标记语法来访问这些对象。
</p>
</dd>
<dt>
<span class="term">
<code class="literal">routing</code>
</span>
</dt>
<dd>
(可选, string) 要从中提取词项值的文档的自定义的 <a class="xref" href="mapping-routing-field.html" title="_routing 字段" rel="nofollow">路由值</a>。

如果在为文档编制索引时提供了自定义的路由值，则此参数是必需的。
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h5 class="title">
<a id="query-dsl-terms-lookup-example"></a>词项查找(terms lookup)示例
</h5>
</div></div></div>
<p>要了解词项查找的工作原理，请尝试以下示例。</p>
<div class="olist orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p>
创建一个索引，其有一个名为<code class="literal">color</code>、类型为<code class="literal">keyword</code>的字段。
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT my_index
{
    "mappings" : {
        "properties" : {
            "color" : { "type" : "keyword" }
        }
    }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/292.console"></div>
</li>
<li class="listitem">
<p>
添加并索引一个文档，其 id 为 1，字段<code class="literal">color</code>的值为<code class="word">["blue", "green"]</code>。
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT my_index/_doc/1
{
  "color":   ["blue", "green"]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/293.console"></div>
</li>
<li class="listitem">
<p>
添加并索引另一个文档，其 id 为 2，字段<code class="literal">color</code>的值为<code class="word">blue</code>。
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT my_index/_doc/2
{
  "color":   "blue"
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/294.console"></div>
</li>
<li class="listitem">
<p>
使用带词项查找参数的 <code class="literal">terms</code> 查询去查找包含与文档 2 中的一个或多个词项相同的文档。

包括<code class="literal">pretty</code>参数，这样响应更具可读性。
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET my_index/_search?pretty
{
  "query": {
    "terms": {
        "color" : {
            "index" : "my_index",
            "id" : "2",
            "path" : "color"
        }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/295.console"></div>
<p>
因为文档 2 和文档 1 在<code class="literal">color</code>字段中都包含<code class="word">blue</code>，所以 Elasticsearch 返回了这两个文档。
</p>
<div class="pre_wrapper lang-console-result">
<pre class="programlisting prettyprint lang-console-result">{
  "took" : 17,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "my_index",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "color" : [
            "blue",
            "green"
          ]
        }
      },
      {
        "_index" : "my_index",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 1.0,
        "_source" : {
          "color" : "blue"
        }
      }
    ]
  }
}</pre>
</div>
</li>
</ol>
</div>
</div>

</div>

</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="query-dsl-term-query.html">« term 查询</a>
</span>
<span class="next">
<a href="query-dsl-terms-set-query.html">terms_set 查询 »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>